#define _CRT_SECURE_NO_WARNINGS 1


//struct ListNode* createlist()
//{
//    int num;
//    scanf("%d", &num);
//    int arr[1000];
//    int count = 0;
//    while (num != -1)
//    {
//        arr[count++] = num;
//        scanf("%d", &num);
//    }
//    struct ListNode* phead = (struct ListNode*)malloc(sizeof(struct ListNode));
//    struct ListNode* ptail = phead;
//    for (int i = count - 1; i >= 0; i--)
//    {
//        struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));
//        newnode->data = arr[i];
//        newnode->next = NULL;
//        ptail->next = newnode;
//        ptail = newnode;
//    }
//    struct ListNode* ret = phead->next;
//    free(phead);
//    return ret;
//}

//ElementType FindKth(List L, int K) {
//    int i;
//    i = 1;
//    while (L != NULL) {
//        if (i == K) {
//            return L->Data;
//        }
//        L = L->Next;
//        i++;
//    }
//    return ERROR;
//}

//int Length(List L) {
//    PtrToLNode p;
//    int i = 0;
//    p = L;
//    while (p != NULL) {
//        i++;
//        p = p->Next;
//    }
//    return i;
//}


//Position Find(List L, ElementType X)
//{
//    List cur = L;
//    while (cur != NULL)
//    {
//        if (cur->Data == X)
//        {
//            return cur;
//        }
//        cur = cur->Next;
//    }
//    return ERROR;
//}
//List Insert(List L, ElementType X, Position P)
//{
//    List cur = L;
//    if (cur == P)
//    {
//        List newnode = (List)malloc(sizeof(struct LNode));
//        newnode->Data = X;
//        newnode->Next = P;
//        return newnode;
//    }
//    else
//    {
//        while (cur != NULL && cur->Next != P)
//        {
//            cur = cur->Next;
//        }
//        if (cur == NULL)
//        {
//            printf("Wrong Position for Insertion\n");
//            return ERROR;
//        }
//        List newnode = (List)malloc(sizeof(struct LNode));
//        newnode->Data = X;
//        newnode->Next = P;
//        cur->Next = newnode;
//        return L;
//    }
//}
//List Delete(List L, Position P)
//{
//    List cur = L;
//    if (cur == P)
//    {
//        List next = P->Next;
//        free(P);
//        return next;
//    }
//    else
//    {
//        while (cur != NULL && cur->Next != P)
//        {
//            cur = cur->Next;
//        }
//        if (cur == NULL)
//        {
//            printf("Wrong Position for Insertion\n");
//            return ERROR;
//        }
//        cur->Next = P->Next;
//        free(P);
//        return L;
//    }
//}